extends Node

const 基础="res://data/基础.json"
const 探索物="res://data/探索物.json"

const 数据表集:Dictionary={
	卡牌="res://data/卡牌.json",
	动作="res://data/动作.json",
	可拖入动作="res://data/可拖入动作.json",
	阶段="res://data/阶段.json",
	属性="res://data/属性.json",	
	状态="res://data/状态.json"	
}
#载入的游戏初始数据
var 初始数据:Dictionary={}

func _ready():
	randomize()
	载入基础数据()
	载入探索物()
	载入数据表()
	补全数据()
	
func 载入基础数据():
	初始数据.merge(读取json文件(基础))	
	
func 载入探索物():
	初始数据.探索物={}
	初始数据.探索物.merge(读取json文件(探索物))	
	
func 载入数据表():
	for 表名 in 数据表集:
		初始数据[表名]={}
		初始数据[表名].merge(读取json文件并合并数据(数据表集[表名]))
		
func	 补全数据():
	添加id列表到数据(初始数据.卡牌,初始数据.动作)
	添加id列表到数据(初始数据.卡牌,初始数据.可拖入动作)
	添加id列表到数据(初始数据.卡牌,初始数据.属性)
	添加id列表到数据(初始数据.状态,初始数据.阶段)

func 添加id列表到数据(主数据列表:Dictionary,子数据列表:Dictionary):
	for 子id in 子数据列表:
		var 主id=子数据列表[子id]["主id"]
		var 列名=子数据列表[子id]["列名"]
		if 主数据列表.has(主id):
			主数据列表[主id][列名].append(子id)

func 读取json文件并合并数据(数据文件):
	var 数据:Dictionary=读取json文件(数据文件)
	var 最终数据:Dictionary={}
	for 类型 in 数据:
		最终数据.merge(数据[类型])
	return 最终数据
		
func 读取json文件(json文件):
	var 数据=null
	if FileAccess.file_exists(json文件):
		var 文件=FileAccess.open(json文件, FileAccess.READ )
		var json文件解析器 = JSON.new()
		json文件解析器.parse( 文件.get_as_text())
		数据 = json文件解析器.get_data()
	return 数据
	
